<?php

/**
 *                  ********************
 *    ************ FILMEK ADMIN CONTROLLER ************
 *                  ********************
 * 
 * 
 */
if (!defined('BASEPATH'))
    exit('No direct script access allowed');

class Filmek extends Admin_Controller {

    function __construct() {
        // Call the Model constructor
        parent::__construct();
        $this->load->model("film_model");
        // film műfaj model betöltése
        $this->load->model('film_mufaj_model');
        // film műfajok betöltése
        $config['order_by'] = "mufaj_nev";
        $this->data['film_mufaj_data'] = $this->film_mufaj_model->get_film_mufajok($config);
    }

    function get_film_field_data() {
        $fields = $this->db->list_fields('mh_filmek');
        foreach ($fields as $field) {
            echo $field . " ";
        }
    }

    /**
     * 
     * Index Page for admin
     * 
     * 
     */
    public function index() {
        $this->film_list();
    }

    /**
     * 
     * Datatables tábla inicializálás
     * 
     * ajax_source_site_url - datatables kéréseire válaszol 
     * table_name - a kitöltendő tábla id-je  (html view-ban)
     * table_fields - a html tábla egyes oszlopainak nevei 
     * edit_site_url - az edit oldal címe (nem ajaxos)
     * ajax_delete_site_url - az ajaxos törlés címe (paramétersoron kapja meg az id-t)
     * 
     * */
    public function film_list() {
        $this->data['title'] = "Összes film";
        $this->data['dtables'] = array(
            'ajax_source_site_url' => 'admin/filmek/ajax_get_table',
            'table_name' => 'filmek_table',
            'table_fields' => array(
                'film_id',
                'eredeti_cim',
                'magyar_cim',
                'hossz',
                'rovid_leiras',
                'hangulat_cimke',
                'mufaj_nev', // 1:1
                'sajat_forgalmazas'
            ),
            'edit_site_url' => 'admin/filmek/edit_film',
            'ajax_delete_site_url' => 'admin/filmek/ajax_delete',
        );
        $this->_load_view('admin/filmek/film_list_view', $this->data);
    }

    public function edit_film($id) {
        $this->data['title'] = "Film szerkesztése";
        if (!isset($id)) {
            $this->session->set_flashdata('error_message', 'A szerkesztéshez id-t kell megadni.');
            redirect('admin/filmek');
        }
        $this->data['film_data'] = $this->film_model->get_film($id);
        $this->_load_view('admin/filmek/film_edit_view', $this->data);
    }

    public function new_film() {
        $this->data['title'] = "Új film hozzáadása";
        $this->_load_view('admin/filmek/film_edit_view', $this->data);
    }

    public function add_film() {
        $this->form_validation->set_rules('eredeti_cim', 'eredeti cím', 'required|trim');
        $this->form_validation->set_rules('magyar_cim', '', 'trim');
        $this->form_validation->set_rules('rendezo', '', 'trim');
        $this->form_validation->set_rules('megjelenes_datuma', '', 'trim');
        $this->form_validation->set_rules('foszereplok', '', 'trim');
        $this->form_validation->set_rules('hossz', '', 'trim|is_natural');
        $this->form_validation->set_rules('imdb', '', '');
        $this->form_validation->set_rules('trailer_link', '', '');
        $this->form_validation->set_rules('hangulat_cimke', '', 'trim');
        $this->form_validation->set_rules('kategoria', '', '');
        $this->form_validation->set_rules('kep_url', '', '');
        $this->form_validation->set_rules('rovid_leiras', '', '');
        $this->form_validation->set_rules('sajat_forgalmazas', '', '');
        // set error delimiters
        $this->form_validation->set_error_delimiters('', '');
        if ($this->form_validation->run() == FALSE) {
            $this->new_film();
            return;
        }
// átjutunk az ellenőrzésen akkor lementjük az adatokat
        $film_data = $this->input->post();

// beletesszük a film cim slug-ot
// string helper kell az inkrementáláshoz
        $this->load->helper('string');
// addig inkrementáljuk, amíg már nem létezik az adatbázisban ilyen slug.
        $film_data['eredeti_cim_slug'] = _generate_slug($film_data['eredeti_cim']);
// ha már van ilyen név inkrementálunk
        while ($this->film_model->get_film_by_slug($film_data['eredeti_cim_slug']) != NULL) {
            $film_data['eredeti_cim_slug'] = increment_string($film_data['eredeti_cim_slug']);
        }

// kiszedjük ami nem kell
        unset($film_data['kategoria']);

// elmentjük
        $this->film_model->add_film($film_data);
// legközelebb találkozunk, most lista.
        $this->session->set_flashdata('message', 'Az új film: ' .
                $film_data["eredeti_cim"] . ' sikeresen bekerült az adatbázisba.');
        redirect('admin/filmek');
    }

    public function update_film($id) {
        if (!isset($id)) {
            $this->session->set_flashdata('error_message', 'A szerkesztéshez id-t kell megadni.');
            redirect('admin/filmek');
        }
        $this->form_validation->set_rules('eredeti_cim', 'eredeti cím', 'required|trim');
        $this->form_validation->set_rules('magyar_cim', '', 'trim');
        $this->form_validation->set_rules('rendezo', '', 'trim');
        $this->form_validation->set_rules('foszereplok', '', 'trim');
        $this->form_validation->set_rules('megjelenes_datuma', '', 'trim');
        $this->form_validation->set_rules('hossz', '', 'trim|is_natural');
        $this->form_validation->set_rules('imdb', '', '');
        $this->form_validation->set_rules('trailer_link', '', '');
        $this->form_validation->set_rules('hangulat_cimke', '', 'trim');
        $this->form_validation->set_rules('kategoria', '', '');
        $this->form_validation->set_rules('kep_url', '', '');
        $this->form_validation->set_rules('rovid_leiras', '', '');
        $this->form_validation->set_rules('sajat_forgalmazas', '', '');
        // set error delimiters
        $this->form_validation->set_error_delimiters('', '');
        if ($this->form_validation->run() == FALSE) {
            $this->edit_film($id);
            return;
        }
// átjutunk az ellenőrzésen akkor lementjük az adatokat
        $film_data = $this->input->post();

// beletesszük az id-t
        $film_data['film_id'] = $id;

// beletesszük a film cim slug-ot
// string helper kell az inkrementáláshoz
        $this->load->helper('string');
// addig inkrementáljuk, amíg már nem létezik az adatbázisban ilyen slug.
        $film_data['eredeti_cim_slug'] = _generate_slug($film_data['eredeti_cim']);
// ha már van ilyen név inkrementálunk
        while ($this->film_model->get_film_by_slug($film_data['eredeti_cim_slug'], $id) != NULL) {
            $film_data['eredeti_cim_slug'] = increment_string($film_data['eredeti_cim_slug']);
        }


// kiszedjük ami nem kell
//unset($film_data['kategoria']);
// elmentjük
        $this->film_model->update_film($film_data);
// legközelebb találkozunk, most lista.
        $this->session->set_flashdata('message', 'A film: ' .
                $film_data["eredeti_cim"] . ' adatai sikeresen módusultak.');
        redirect('admin/filmek');
    }

    /**
     *  Ajaxos törlés
     * 
     * @param type $id 
     */
    public function ajax_delete($id) {
        $this->film_model->delete($id);
    }

    /**
     * Datatables-hez filmek listázása
     */
    public function ajax_get_table() {
        /**
         * Ami bejön és fontos:
         * iDisplayStart
         * iDisplayLength
         * sSearch
         * sEcho    _ XSS protection
         * 
         * 
         * Ami kimegy:
         * 
         * iTotalRecords
         * iTotalDisplayRecords
         * sEcho
         * aaData
         */
// elkérjük az összes postolt adatot
        $all_post = $this->input->post();

        // text helper kelleni fog
        $this->load->helper('text');

//var_dump($all_post);
// megnézzük mennyi column van a táblázatban
        $number_of_columns = $all_post['iColumns'];

// megnézzük kell-e keresni valamire
        ($all_post['sSearch'] != '') ? $search_like = $all_post['sSearch'] : $search_like = NULL;

// csinálunk egy listát a megjelítendő változókról
// azaz adatbázisból az oszlopokról
        $select_from_database = "";
        for ($i = 0; $i < $number_of_columns; $i++) {
            $select_from_database .= $all_post["mDataProp_$i"];
//a vesszőt az utolsóig hozzáadja, mivel ez felsorolás
            if ($i < $number_of_columns - 1)
                $select_from_database.=", ";
        }

// SORBARENDEZÉS IMPLEMENTÁLÁSA
// megszerezzük mi szerint kell sortolnunk
        $sort_by_id = $all_post["iSortCol_0"];
// így megkapjuk a nevét
        $order_by = $all_post["mDataProp_$sort_by_id"];
// és most hozzáadjuk az irányt
        $order_dir = $all_post["sSortDir_0"];
        ;

// összeállítjuk a lekérést, amit a modelnek küldünk.
        $films_request = array(
// keresés
            'search_like' => $search_like,
            // kiválasztás
            'select' => $select_from_database,
            // limit&offset
            'limit' => $all_post['iDisplayLength'],
            'offset' => $all_post['iDisplayStart'],
            'order_by' => $order_by,
            'order_dir' => $order_dir
        );

        $films = $this->film_model->get_films($films_request);


        foreach ($films as $film) {
            $film->DT_RowId = "film_id_" . $film->film_id;
            
            // ha saját forgalmazású, az jelenjen meg
            if($film->sajat_forgalmazas == 1) 
                $film->sajat_forgalmazas = 'igen';
            else $film->sajat_forgalmazas = 'nem';
            
            $film->rovid_leiras = character_limiter($film->rovid_leiras, 30);
        }
        $data["iTotalRecords"] = $this->film_model->count();
        $data["iTotalDisplayRecords"] = $data["iTotalRecords"];
        $data["sEcho"] = $all_post["sEcho"];
        $data["aaData"] = $films;

        echo encode_json($data);
    }

}

